# -*- coding: utf-8 -*-
"""
@Project: Msptest
@Author: 余振新
@File name: 公共.py
@Create time: 2023/8/15 16:40
"""

from time import sleep

from business.首页.病例征集系统.导航菜单 import Menu
from business.首页.聚合页 import Home
from common.base_action import BaseAction
from common.gol import set_value, get_value
from common.log import INFO
from common.mysql_control import MySqlDB
from common.path import ensure_path_sep
from common.read_yaml import read_yaml
from page.首页.病例征集系统.病例列表 import 公共

data = read_yaml()["case"]
text = data["text"]
digit = data["digit"]
photo_path = ensure_path_sep(data["photo_path"])
pdf_path = ensure_path_sep(data["pdf_path"])
ppt_path = ensure_path_sep(data["ppt_path"])


class Public(BaseAction):
    def __init__(self, driver):
        super().__init__(driver)  # 调用父类的 __init__ 方法来初始化实例变量

    def 返回中心(self):
        self.click(公共.返回中心)

    def 新增按钮(self):
        self.click(公共.新增按钮)

    def 进入新增页面(self, department: tuple):
        INFO.logger.info("开始医院组病例新增流程")
        Menu(self.driver).打开病例列表(department)
        sleep(0.3)
        self.新增按钮()

    def 客户信息_客户姓名(self):
        self.click(公共.客户姓名)
        self.click(公共.客户姓名_第一个)
        self.click(公共.客户姓名_确定)

    def 基本信息_选择产品(self):
        self.click(公共.选择产品)
        self.click(公共.选择产品_第一个)
        self.click(公共.选择产品_确定)

    def 基本信息_疾病(self):
        self.click(公共.疾病)
        self.click(公共.疾病姓名_第一个)
        self.click(公共.疾病姓名_确定)

    def 基本信息_患者姓氏(self):
        self.send_keys(公共.患者姓氏, text)

    def 基本信息_性别_男(self):
        self.click(公共.性别_男)

    def 基本信息_患者年龄(self):
        self.send_keys(公共.患者年龄, digit)

    def 基本信息_就诊时间(self):
        self.send_keys(公共.就诊时间, "2099-11-01 00:00:00 - 2099-11-02 00:00:00")

    def 继续上传病例(self):
        self.click(公共.继续上传病例)

    def 病例详情_病例标题(self):
        self.send_keys(公共.病例标题, text)

    def 病例详情_附件(self) -> bool:
        self.click(公共.附件上传)
        sleep(0.3)
        self.upload_file(ppt_path)
        return self.is_element_exist(公共.断言_附件_上传成功)

    def 病例详情_劳务费(self):
        self.send_keys(公共.劳务费, digit)

    def 提交(self):
        self.click(公共.提交)

    @staticmethod
    def 保存病例编号():
        case_no = MySqlDB().query(state="one", sql="select case_no from marketing.case_info where surname ='UI自动化测试数据' ORDER BY case_no DESC")
        set_value("case_no", case_no["case_no"])
        INFO.logger.info(f"获取到的病例编号为：{get_value('case_no')}")

    def 断言_新增病例成功(self):
        if self.is_element_exist(公共.新增按钮):
            self.保存病例编号()
            return True
        else:
            return False
